/** @file
 * Engine.h
 *
 *  Created on: 2012-03-04
 *  @author: Kamil Mówiński <xnasterx@gmail.com>
 */

#ifndef ENGINE_H_
#define ENGINE_H_
#include <SDL/SDL.h>
#include <iostream>

////////////////
/** Zmienna oznaczająca lewy silnik */
#define LEFT 0
/** Zmienna oznaczająca prawy silnik */
#define RIGHT 1
/** Stan klawisza "w lewo" */
#define KEY_LEFT 0
/** Stan klawisza "w prawo" */
#define KEY_RIGHT 1
/** Stan klawisza "przyspiesz" */
#define KEY_UP 2
/** Stan klawisza "zwolnij" */
#define KEY_DOWN 3

/** Klasa reprezentująca stan silników oraz stan klawiszy
 * za sterowanie platfromą
 */
class Engine {
private:
	/** Tablica zmiennych typu boolean przechowująca stan klawiszy */
	bool Key[4];

	/** Prywatna metoda służąca do ustawiania oczekującej wydajności silnika
	 * na podstawie wciśniętych klawiszy
	 **/
	void SetEngine(void);

public:
	/** Tablica przechowująca stan silników */
	char EnginePow[2];
	/** Konstruktor ilicjalizujący wszystkie zmienne wartościami zerowymi */
	Engine();
	/** TO DO */
	virtual ~Engine();
	/** Zmienia stan klawisza na wciśnięty.
	 * @param key Stała symbolizująca wciśnięty klawisz
	 */
	void KeyDown(SDLKey key);
	/** Zmienia stan klawisza na puszczony.
	 * @param key Stała symbolizująca puszczony klawisz
	 */
	void KeyUp(SDLKey key);
	/** TO DO
	 * Wysyła informacje do mikrokontrolera
	 */
	void Send(void);
};

#endif /* ENGINE_H_ */
